[INFO] cloning repository https://github.com/liamhelmer/web-terminal
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/liamhelmer/web-terminal" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fliamhelmer%2Fweb-terminal", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fliamhelmer%2Fweb-terminal'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e6389c24327b0ebdbca5426de286d01e98283a16
[INFO] checking liamhelmer/web-terminal/e6389c24327b0ebdbca5426de286d01e98283a16 against master#03c609abb6638f9d7f49f34326d4137d07f5cd61 for pr-155945
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fliamhelmer%2Fweb-terminal" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-1-tc1/source/.cargo/config.toml
[INFO] removed /workspace/builds/worker-1-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/liamhelmer/web-terminal
[INFO] finished tweaking git repo https://github.com/liamhelmer/web-terminal
[INFO] tweaked toml for git repo https://github.com/liamhelmer/web-terminal written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/liamhelmer/web-terminal on toolchain 03c609abb6638f9d7f49f34326d4137d07f5cd61
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/liamhelmer/web-terminal already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded deadpool v0.12.3
[INFO] [stderr]   Downloaded deranged v0.5.4
[INFO] [stderr]   Downloaded quanta v0.12.6
[INFO] [stderr]   Downloaded validator_derive v0.19.0
[INFO] [stderr]   Downloaded bytestring v1.5.0
[INFO] [stderr]   Downloaded cc v1.2.39
[INFO] [stderr]   Downloaded simple_asn1 v0.6.3
[INFO] [stderr]   Downloaded humantime v2.3.0
[INFO] [stderr]   Downloaded password-hash v0.5.0
[INFO] [stderr]   Downloaded tracing-actix-web v0.7.19
[INFO] [stderr]   Downloaded actix-http v3.11.1
[INFO] [stderr]   Downloaded serial2 v0.2.33
[INFO] [stderr]   Downloaded wiremock v0.6.5
[INFO] [stderr]   Downloaded v_htmlescape v0.15.8
[INFO] [stderr]   Downloaded validator v0.19.0
[INFO] [stderr]   Downloaded rust-ini v0.20.0
[INFO] [stderr]   Downloaded clap_complete v4.5.58
[INFO] [stderr]   Downloaded config v0.14.1
[INFO] [stderr]   Downloaded clap_builder v4.5.48
[INFO] [stderr]   Downloaded actix v0.13.5
[INFO] [stderr]   Downloaded find-msvc-tools v0.1.2
[INFO] [stderr]   Downloaded windows-targets v0.53.4
[INFO] [stderr]   Downloaded governor v0.8.1
[INFO] [stderr]   Downloaded actix-web-lab v0.23.0
[INFO] [stderr]   Downloaded yaml-rust2 v0.8.1
[INFO] [stderr]   Downloaded mediatype v0.19.20
[INFO] [stderr]   Downloaded actix-web-actors v4.3.1+deprecated
[INFO] [stderr]   Downloaded actix_derive v0.6.2
[INFO] [stderr]   Downloaded argon2 v0.5.3
[INFO] [stderr]   Downloaded windows-sys v0.61.1
[INFO] [stderr]   Downloaded actix-rt v2.11.0
[INFO] [stderr]   Downloaded aws-lc-rs v1.14.1
[INFO] [stderr]   Downloaded rustls-webpki v0.103.6
[INFO] [stderr]   Downloaded mutually_exclusive_features v0.1.0
[INFO] [stderr]   Downloaded prometheus v0.14.0
[INFO] [stderr]   Downloaded jsonwebtoken v9.3.1
[INFO] [stderr]   Downloaded humantime-serde v1.1.1
[INFO] [stderr]   Downloaded actix-files v0.6.8
[INFO] [stderr]   Downloaded hashlink v0.8.4
[INFO] [stderr]   Downloaded aws-lc-sys v0.32.1
[INFO] [stderr]   Downloaded actix-cors v0.7.1
[INFO] [stderr]   Downloaded serde_html_form v0.2.8
[INFO] [stderr]   Downloaded actix-web-lab-derive v0.23.0
[INFO] [stderr]   Downloaded clap v4.5.48
[INFO] [stderr]   Downloaded assert_cmd v2.0.17
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 582c0964ef21e062e63007b8ab861ee27d98241fdf3b57d8a84e205a713ade00
[INFO] running `Command { std: "docker" "start" "-a" "582c0964ef21e062e63007b8ab861ee27d98241fdf3b57d8a84e205a713ade00", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "582c0964ef21e062e63007b8ab861ee27d98241fdf3b57d8a84e205a713ade00", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "582c0964ef21e062e63007b8ab861ee27d98241fdf3b57d8a84e205a713ade00", kill_on_drop: false }`
[INFO] [stdout] 582c0964ef21e062e63007b8ab861ee27d98241fdf3b57d8a84e205a713ade00
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c5d6dbb10fe5472acbb298c429b03adf0f56b2813c5f6d3c91cec833b83cf579
[INFO] running `Command { std: "docker" "start" "-a" "c5d6dbb10fe5472acbb298c429b03adf0f56b2813c5f6d3c91cec833b83cf579", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]     Checking cfg-if v1.0.3
[INFO] [stderr]    Compiling libc v0.2.176
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]    Compiling find-msvc-tools v0.1.2
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]    Compiling zerocopy v0.8.27
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking regex-syntax v0.8.6
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]     Checking serde_json v1.0.145
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]    Compiling cc v1.2.39
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]     Checking regex-automata v0.4.11
[INFO] [stderr]    Compiling time-macros v0.2.24
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking deranged v0.5.4
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]     Checking local-waker v0.1.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking alloc-no-stdlib v2.0.4
[INFO] [stderr]     Checking alloc-stdlib v0.2.2
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]    Compiling bytes v1.10.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling unicode-xid v0.2.6
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling bytestring v1.5.0
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]     Checking time v0.3.44
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking brotli-decompressor v5.0.0
[INFO] [stderr]     Checking regex v1.11.3
[INFO] [stderr]     Checking crc32fast v1.5.0
[INFO] [stderr]     Checking actix-utils v3.0.1
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]    Compiling cookie v0.16.2
[INFO] [stderr]     Checking actix-service v2.0.3
[INFO] [stderr]    Compiling regex-lite v0.1.7
[INFO] [stderr]     Checking rustls-pki-types v1.12.0
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking brotli v8.0.2
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling actix-router v0.5.3
[INFO] [stderr]     Checking local-channel v0.1.5
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking language-tags v0.3.2
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]     Checking impl-more v0.1.9
[INFO] [stderr]    Compiling rustls v0.23.32
[INFO] [stderr]     Checking anstyle-query v1.1.4
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking anstream v0.6.20
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]     Checking clap_lex v0.7.5
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]    Compiling v_htmlescape v0.15.8
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]    Compiling actix-macros v0.2.4
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling pest v2.8.2
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking bitflags v2.9.4
[INFO] [stderr]     Checking potential_utf v0.1.3
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling actix-web-codegen v4.3.0
[INFO] [stderr]    Compiling pest_meta v2.8.2
[INFO] [stderr]     Checking tokio-util v0.7.16
[INFO] [stderr]     Checking actix-rt v2.11.0
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]     Checking rustls-webpki v0.103.6
[INFO] [stderr]     Checking actix-server v2.6.0
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking actix-codec v0.5.2
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]    Compiling pest_generator v2.8.2
[INFO] [stderr]     Checking terminal_size v0.4.3
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking clap_builder v4.5.48
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling clap_derive v4.5.47
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]    Compiling protobuf v3.7.2
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking clap v4.5.48
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]    Compiling pest_derive v2.8.2
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]     Checking protobuf-support v3.7.2
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling actix_derive v0.6.2
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]     Checking webpki-roots v1.0.2
[INFO] [stderr]     Checking hashlink v0.8.4
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking hyper v1.7.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking base64ct v1.8.0
[INFO] [stderr]    Compiling prometheus v0.14.0
[INFO] [stderr]     Checking predicates-core v1.0.9
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking actix v0.13.5
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking yaml-rust2 v0.8.1
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking quanta v0.12.6
[INFO] [stderr]     Checking simple_asn1 v0.6.3
[INFO] [stderr]     Checking hyper-util v0.1.17
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking tower-http v0.6.6
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking rust-ini v0.20.0
[INFO] [stderr]     Checking nix v0.28.0
[INFO] [stderr]     Checking actix-http v3.11.1
[INFO] [stderr]    Compiling validator_derive v0.19.0
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]    Compiling web-terminal v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking filedescriptor v0.8.3
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking float-cmp v0.10.0
[INFO] [stderr]     Checking serial2 v0.2.33
[INFO] [stderr]     Checking pem v3.0.5
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]     Checking spinning_top v0.3.0
[INFO] [stderr]     Checking difflib v0.4.0
[INFO] [stderr]     Checking nonzero_ext v0.3.0
[INFO] [stderr]     Checking no-std-compat v0.4.1
[INFO] [stderr]     Checking pathdiff v0.2.3
[INFO] [stderr]     Checking termtree v0.5.1
[INFO] [stderr]     Checking mutually_exclusive_features v0.1.0
[INFO] [stderr]    Compiling mockall_derive v0.13.1
[INFO] [stderr]    Compiling doc-comment v0.3.3
[INFO] [stderr]     Checking nu-ansi-term v0.50.1
[INFO] [stderr]     Checking shell-words v1.1.0
[INFO] [stderr]     Checking humantime v2.3.0
[INFO] [stderr]     Checking normalize-line-endings v0.3.0
[INFO] [stderr]     Checking futures-timer v3.0.3
[INFO] [stderr]     Checking http-range v0.1.5
[INFO] [stderr]     Checking predicates v3.1.3
[INFO] [stderr]     Checking governor v0.8.1
[INFO] [stderr]     Checking config v0.14.1
[INFO] [stderr]     Checking portable-pty v0.9.0
[INFO] [stderr]     Checking humantime-serde v1.1.1
[INFO] [stderr]     Checking tracing-subscriber v0.3.20
[INFO] [stderr]     Checking predicates-tree v1.0.12
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking jsonwebtoken v9.3.1
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking validator v0.19.0
[INFO] [stderr]     Checking reqwest v0.12.23
[INFO] [stderr]     Checking actix-web v4.11.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr] warning: web-terminal@0.1.0: Building with profile: debug
[INFO] [stderr] warning: web-terminal@0.1.0: Skipping frontend build in debug mode (use 'pnpm run build' manually)
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking clap_complete v4.5.58
[INFO] [stderr]    Compiling assert_cmd v2.0.17
[INFO] [stderr]     Checking deadpool v0.12.3
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking assert-json-diff v2.0.2
[INFO] [stderr]     Checking bstr v1.12.0
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking fragile v2.0.1
[INFO] [stderr]     Checking downcast v0.11.0
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking wiremock v0.6.5
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking actix-web-actors v4.3.1+deprecated
[INFO] [stderr]     Checking tracing-actix-web v0.7.19
[INFO] [stderr]     Checking actix-cors v0.7.1
[INFO] [stderr]     Checking actix-files v0.6.8
[INFO] [stderr]     Checking mockall v0.13.1
[INFO] [stdout] error: the async keyword is missing from the function declaration
[INFO] [stdout]    --> src/server/middleware/security_headers.rs:199:5
[INFO] [stdout]     |
[INFO] [stdout] 199 |     fn test_security_headers_config_default() {
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/cli/commands/config.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/cli/commands/server.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HttpRequest`
[INFO] [stdout]  --> src/handlers/api_sessions.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use actix_web::{web, HttpRequest, HttpResponse};
[INFO] [stdout]   |                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DateTime`
[INFO] [stdout]  --> src/handlers/api_sessions.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | use chrono::{DateTime, Utc};
[INFO] [stdout]   |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncRead` and `AsyncWrite`
[INFO] [stdout]  --> src/pty/io_handler.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tokio::io::{AsyncRead, AsyncWrite};
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SessionId`
[INFO] [stdout]   --> src/security/authorization.rs:13:29
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::session::state::{SessionId, UserId};
[INFO] [stdout]    |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ValidationError`
[INFO] [stdout]   --> src/server/middleware/auth.rs:14:60
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::security::jwt_validator::{Claims, JwtValidator, ValidationError};
[INFO] [stdout]    |                                                            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/cli/commands/config.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/cli/commands/server.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HttpRequest`
[INFO] [stdout]  --> src/handlers/api_sessions.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use actix_web::{web, HttpRequest, HttpResponse};
[INFO] [stdout]   |                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DateTime`
[INFO] [stdout]  --> src/handlers/api_sessions.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | use chrono::{DateTime, Utc};
[INFO] [stdout]   |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::session::manager::SessionConfig`
[INFO] [stdout]    --> src/handlers/api_sessions.rs:275:9
[INFO] [stdout]     |
[INFO] [stdout] 275 |     use crate::session::manager::SessionConfig;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::session::state::UserId`
[INFO] [stdout]    --> src/handlers/api_sessions.rs:276:9
[INFO] [stdout]     |
[INFO] [stdout] 276 |     use crate::session::state::UserId;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncRead` and `AsyncWrite`
[INFO] [stdout]  --> src/pty/io_handler.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tokio::io::{AsyncRead, AsyncWrite};
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SessionId`
[INFO] [stdout]   --> src/security/authorization.rs:13:29
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::session::state::{SessionId, UserId};
[INFO] [stdout]    |                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::pty::PtyConfig`
[INFO] [stdout]    --> src/server/http.rs:330:9
[INFO] [stdout]     |
[INFO] [stdout] 330 |     use crate::pty::PtyConfig;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ValidationError`
[INFO] [stdout]   --> src/server/middleware/auth.rs:14:60
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::security::jwt_validator::{Claims, JwtValidator, ValidationError};
[INFO] [stdout]    |                                                            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 3 arguments were supplied
[INFO] [stdout]    --> src/server/http.rs:339:22
[INFO] [stdout]     |
[INFO] [stdout] 339 |         let server = Server::new(config, session_manager, jwt_secret);
[INFO] [stdout]     |                      ^^^^^^^^^^^                          ---------- unexpected argument #3 of type `&[u8; 38]`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/server/http.rs:43:12
[INFO] [stdout]     |
[INFO] [stdout]  43 |     pub fn new(config: Config, session_manager: SessionManager) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 339 -         let server = Server::new(config, session_manager, jwt_secret);
[INFO] [stdout] 339 +         let server = Server::new(config, session_manager);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/server/middleware/auth.rs:165:18
[INFO] [stdout]     |
[INFO] [stdout] 165 |             aud: Some("web-terminal".to_string()),
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Audience`, found `Option<String>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected enum `jwt_validator::Audience`
[INFO] [stdout]                found enum `std::option::Option<std::string::String>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/server/middleware/auth.rs:168:18
[INFO] [stdout]     |
[INFO] [stdout] 168 |             iat: Some(1234567800),
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^ expected `i64`, found `Option<{integer}>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected type `i64`
[INFO] [stdout]                found enum `std::option::Option<{integer}>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `jwt_validator::Claims` has no field named `additional`
[INFO] [stdout]    --> src/server/middleware/auth.rs:175:13
[INFO] [stdout]     |
[INFO] [stdout] 175 |             additional: Default::default(),
[INFO] [stdout]     |             ^^^^^^^^^^ `jwt_validator::Claims` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `usc`, `custom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `as_ref` found for struct `session::state::UserId` in the current scope
[INFO] [stdout]    --> src/server/middleware/auth.rs:180:37
[INFO] [stdout]     |
[INFO] [stdout] 180 |         assert_eq!(user_ctx.user_id.as_ref(), "user:default/testuser");
[INFO] [stdout]     |                                     ^^^^^^ method not found in `session::state::UserId`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/session/state.rs:51:1
[INFO] [stdout]     |
[INFO] [stdout]  51 | pub struct UserId(String);
[INFO] [stdout]     | ----------------- method `as_ref` not found for this struct
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `as_ref`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `AsRef`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `child`
[INFO] [stdout]   --> src/execution/process.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let child = pair
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_child`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> src/execution/process.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |         if let Some(info) = processes.get(&pid) {
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `session_ids`
[INFO] [stdout]    --> src/handlers/sessions.rs:232:9
[INFO] [stdout]     |
[INFO] [stdout] 232 |     let session_ids = if can_list_all {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_session_ids`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `child`
[INFO] [stdout]   --> src/execution/process.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |         let child = pair
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_child`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> src/execution/process.rs:117:21
[INFO] [stdout]     |
[INFO] [stdout] 117 |         if let Some(info) = processes.get(&pid) {
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `session_ids`
[INFO] [stdout]    --> src/handlers/sessions.rs:232:9
[INFO] [stdout]     |
[INFO] [stdout] 232 |     let session_ids = if can_list_all {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_session_ids`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server/websocket.rs:199:16
[INFO] [stdout]     |
[INFO] [stdout] 199 |             Ok(mut writer) => {
[INFO] [stdout]     |                ----^^^^^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server/websocket.rs:552:28
[INFO] [stdout]     |
[INFO] [stdout] 552 |                         Ok(mut writer) => {
[INFO] [stdout]     |                            ----^^^^^^
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `default_ttl` is never read
[INFO] [stdout]   --> src/security/jwks_client.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct JwksClient {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 80 |     default_ttl: Duration,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `auth_config` is never read
[INFO] [stdout]    --> src/security/jwt_validator.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub struct JwtValidator {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] 145 |     jwks_client: Arc<JwksClient>,
[INFO] [stdout] 146 |     auth_config: crate::config::AuthConfig,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `health_check` is never used
[INFO] [stdout]    --> src/server/http.rs:174:10
[INFO] [stdout]     |
[INFO] [stdout] 174 | async fn health_check() -> Result<HttpResponse> {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_session` is never used
[INFO] [stdout]    --> src/server/http.rs:185:10
[INFO] [stdout]     |
[INFO] [stdout] 185 | async fn create_session(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_session` is never used
[INFO] [stdout]    --> src/server/http.rs:216:10
[INFO] [stdout]     |
[INFO] [stdout] 216 | async fn get_session(
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_session` is never used
[INFO] [stdout]    --> src/server/http.rs:238:10
[INFO] [stdout]     |
[INFO] [stdout] 238 | async fn delete_session(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_session_history` is never used
[INFO] [stdout]    --> src/server/http.rs:260:10
[INFO] [stdout]     |
[INFO] [stdout] 260 | async fn get_session_history(
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `check_lockout` and `record_violation` are never used
[INFO] [stdout]    --> src/server/middleware/rate_limit.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl RateLimitMiddleware {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn check_lockout(&self, key: &RateLimitKey) -> Option<SystemTime> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     fn record_violation(&self, key: RateLimitKey) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_ack` is never used
[INFO] [stdout]    --> src/server/websocket.rs:353:8
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl WebSocketSession {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 353 |     fn send_ack(&self, message_id: Option<String>, ctx: &mut ws::WebsocketContext<Self>) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server/websocket.rs:199:16
[INFO] [stdout]     |
[INFO] [stdout] 199 |             Ok(mut writer) => {
[INFO] [stdout]     |                ----^^^^^^
[INFO] [stdout]     |                |
[INFO] [stdout]     |                help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/server/websocket.rs:552:28
[INFO] [stdout]     |
[INFO] [stdout] 552 |                         Ok(mut writer) => {
[INFO] [stdout]     |                            ----^^^^^^
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0308, E0560, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] warning: web-terminal@0.1.0: Building with profile: debug
[INFO] [stderr] warning: web-terminal@0.1.0: Skipping frontend build in debug mode (use 'pnpm run build' manually)
[INFO] [stderr] error: could not compile `web-terminal` (lib test) due to 6 previous errors; 15 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: the async keyword is missing from the function declaration
[INFO] [stdout]    --> tests/auth_middleware.rs:147:1
[INFO] [stdout]     |
[INFO] [stdout] 147 | fn test_authenticate_message_serialization() {
[INFO] [stdout]     | ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: the async keyword is missing from the function declaration
[INFO] [stdout]    --> tests/auth_middleware.rs:160:1
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn test_authenticated_message_serialization() {
[INFO] [stdout]     | ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: the async keyword is missing from the function declaration
[INFO] [stdout]    --> tests/auth_middleware.rs:173:1
[INFO] [stdout]     |
[INFO] [stdout] 173 | fn test_authenticate_message_deserialization() {
[INFO] [stdout]     | ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: the async keyword is missing from the function declaration
[INFO] [stdout]    --> tests/auth_middleware.rs:188:1
[INFO] [stdout]     |
[INFO] [stdout] 188 | fn test_user_context_extraction() {
[INFO] [stdout]     | ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `black_box`
[INFO] [stdout]  --> benches/concurrent_load.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
[INFO] [stdout]   |                 ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShellConfig`
[INFO] [stdout]  --> benches/concurrent_load.rs:9:48
[INFO] [stdout]   |
[INFO] [stdout] 9 | use web_terminal::pty::{PtyConfig, PtyManager, ShellConfig};
[INFO] [stdout]   |                                                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PtyConfig`, `PtyManager`, and `ShellConfig`
[INFO] [stdout]  --> benches/session_creation.rs:9:25
[INFO] [stdout]   |
[INFO] [stdout] 9 | use web_terminal::pty::{PtyConfig, PtyManager, ShellConfig};
[INFO] [stdout]   |                         ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SessionId`
[INFO] [stdout]   --> benches/session_creation.rs:10:44
[INFO] [stdout]    |
[INFO] [stdout] 10 | use web_terminal::session::{SessionConfig, SessionId, SessionManager, UserId};
[INFO] [stdout]    |                                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `Duration` is defined multiple times
[INFO] [stdout]    --> tests/unit/session_manager_test.rs:179:5
[INFO] [stdout]     |
[INFO] [stdout]   6 | use std::time::Duration;
[INFO] [stdout]     |     ------------------- previous import of the type `Duration` here
[INFO] [stdout] ...
[INFO] [stdout] 179 | use std::time::Duration;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^ `Duration` reimported here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Duration` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `web_terminal::server::middleware::auth::JwtClaims`
[INFO] [stdout]  --> tests/auth_middleware.rs:9:65
[INFO] [stdout]   |
[INFO] [stdout] 9 | use web_terminal::server::middleware::auth::{JwtAuthMiddleware, JwtClaims};
[INFO] [stdout]   |                                                                 ^^^^^^^^^ no `JwtClaims` in `server::middleware::auth`
[INFO] [stdout]   |
[INFO] [stdout] help: a similar name exists in the module
[INFO] [stdout]   |
[INFO] [stdout] 9 - use web_terminal::server::middleware::auth::{JwtAuthMiddleware, JwtClaims};
[INFO] [stdout] 9 + use web_terminal::server::middleware::auth::{JwtAuthMiddleware, Claims};
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> tests/auth_middleware.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `web_terminal::security::auth::AuthService`
[INFO] [stdout]  --> tests/integration/auth_flow_test.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use web_terminal::security::auth::AuthService;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `AuthService` in `security::auth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> tests/integration/auth_flow_test.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/integration/auth_flow_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/integration/authorization_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PermissionRules`
[INFO] [stdout]   --> tests/integration/authorization_test.rs:10:64
[INFO] [stdout]    |
[INFO] [stdout] 10 | use web_terminal::security::{AuthorizationService, Permission, PermissionRules};
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/integration/concurrent_sessions_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::time::sleep`
[INFO] [stdout]  --> tests/integration/concurrent_sessions_test.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::time::sleep;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> tests/integration/terminal_session_test.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/integration/websocket_test.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `integration::*`
[INFO] [stdout]  --> tests/integration_tests.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use integration::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> tests/auth_middleware.rs:51:50
[INFO] [stdout]    |
[INFO] [stdout] 51 |     let auth_middleware = JwtAuthMiddleware::new(secret);
[INFO] [stdout]    |                           ---------------------- ^^^^^^ expected `Arc<JwtValidator>`, found `&[u8; 38]`
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           arguments to this function are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `Arc<JwtValidator>`
[INFO] [stdout]            found reference `&[u8; 38]`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/server/middleware/auth.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn new(validator: Arc<JwtValidator>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> tests/auth_middleware.rs:72:50
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let auth_middleware = JwtAuthMiddleware::new(secret);
[INFO] [stdout]    |                           ---------------------- ^^^^^^ expected `Arc<JwtValidator>`, found `&[u8; 38]`
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           arguments to this function are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `Arc<JwtValidator>`
[INFO] [stdout]            found reference `&[u8; 38]`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/server/middleware/auth.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn new(validator: Arc<JwtValidator>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> tests/auth_middleware.rs:96:50
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let auth_middleware = JwtAuthMiddleware::new(secret);
[INFO] [stdout]    |                           ---------------------- ^^^^^^ expected `Arc<JwtValidator>`, found `&[u8; 38]`
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           arguments to this function are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `Arc<JwtValidator>`
[INFO] [stdout]            found reference `&[u8; 38]`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/server/middleware/auth.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn new(validator: Arc<JwtValidator>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> tests/auth_middleware.rs:121:50
[INFO] [stdout]     |
[INFO] [stdout] 121 |     let auth_middleware = JwtAuthMiddleware::new(secret);
[INFO] [stdout]     |                           ---------------------- ^^^^^^ expected `Arc<JwtValidator>`, found `&[u8; 38]`
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `Arc<JwtValidator>`
[INFO] [stdout]             found reference `&[u8; 38]`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/server/middleware/auth.rs:75:12
[INFO] [stdout]     |
[INFO] [stdout]  75 |     pub fn new(validator: Arc<JwtValidator>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0308, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stderr] warning: web-terminal@0.1.0: Building with profile: debug
[INFO] [stderr] warning: web-terminal@0.1.0: Skipping frontend build in debug mode (use 'pnpm run build' manually)
[INFO] [stderr] error: could not compile `web-terminal` (test "auth_middleware") due to 9 previous errors; 1 warning emitted
[INFO] [stdout] error[E0432]: unresolved import `web_terminal::security::AuthService`
[INFO] [stdout]  --> tests/unit/auth_test.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use web_terminal::security::AuthService;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `AuthService` in `security`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `update_last_activity` found for struct `Arc<Session>` in the current scope
[INFO] [stdout]    --> benches/concurrent_load.rs:147:37
[INFO] [stdout]     |
[INFO] [stdout] 147 | ...                   session.update_last_activity().await;
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^ method not found in `Arc<Session>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/unit/auth_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]    --> tests/unit/session_manager_test.rs:179:5
[INFO] [stdout]     |
[INFO] [stdout] 179 | use std::time::Duration;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `state` found for struct `Arc<Session>` in the current scope
[INFO] [stdout]    --> benches/concurrent_load.rs:148:50
[INFO] [stdout]     |
[INFO] [stdout] 148 | ...                   let _state = session.state().await;
[INFO] [stdout]     |                                            ^^^^^ private field, not a method
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `update_last_activity` found for reference `&Arc<Session>` in the current scope
[INFO] [stdout]    --> benches/concurrent_load.rs:279:29
[INFO] [stdout]     |
[INFO] [stdout] 279 |                     session.update_last_activity().await;
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^ method not found in `&Arc<Session>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `tls_cert` on type `ServerConfig`
[INFO] [stdout]   --> tests/unit/config_test.rs:21:20
[INFO] [stdout]    |
[INFO] [stdout] 21 |     assert!(config.tls_cert.is_none());
[INFO] [stdout]    |                    ^^^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `host`, `port`, `tls`, `cors`, `security_headers` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `tls_key` on type `ServerConfig`
[INFO] [stdout]   --> tests/unit/config_test.rs:22:20
[INFO] [stdout]    |
[INFO] [stdout] 22 |     assert!(config.tls_key.is_none());
[INFO] [stdout]    |                    ^^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `host`, `port`, `tls`, `cors`, `security_headers` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `ServerConfig` has no field named `tls_cert`
[INFO] [stdout]   --> tests/unit/config_test.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |         tls_cert: Some(PathBuf::from("/path/to/cert.pem")),
[INFO] [stdout]    |         ^^^^^^^^ `ServerConfig` does not have this field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `tls`, `cors`, `security_headers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `ServerConfig` has no field named `tls_key`
[INFO] [stdout]   --> tests/unit/config_test.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         tls_key: Some(PathBuf::from("/path/to/key.pem")),
[INFO] [stdout]    |         ^^^^^^^ `ServerConfig` does not have this field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `tls`, `cors`, `security_headers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `tls_cert` on type `ServerConfig`
[INFO] [stdout]   --> tests/unit/config_test.rs:43:20
[INFO] [stdout]    |
[INFO] [stdout] 43 |     assert!(config.tls_cert.is_some());
[INFO] [stdout]    |                    ^^^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `host`, `port`, `tls`, `cors`, `security_headers` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `tls_key` on type `ServerConfig`
[INFO] [stdout]   --> tests/unit/config_test.rs:44:20
[INFO] [stdout]    |
[INFO] [stdout] 44 |     assert!(config.tls_key.is_some());
[INFO] [stdout]    |                    ^^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `host`, `port`, `tls`, `cors`, `security_headers` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `ServerConfig` has no field named `tls_cert`
[INFO] [stdout]    --> tests/unit/config_test.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 182 |         tls_cert: None,
[INFO] [stdout]     |         ^^^^^^^^ `ServerConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `tls`, `cors`, `security_headers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `ServerConfig` has no field named `tls_key`
[INFO] [stdout]    --> tests/unit/config_test.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |         tls_key: None,
[INFO] [stdout]     |         ^^^^^^^ `ServerConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `tls`, `cors`, `security_headers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `stream` in initializer of `ServerMessage`
[INFO] [stdout]   --> tests/integration/websocket_test.rs:33:22
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let output_msg = ServerMessage::Output {
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^ missing `stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `ServerConfig` has no field named `tls_cert`
[INFO] [stdout]    --> tests/unit/config_test.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |         tls_cert: Some(PathBuf::from("/etc/ssl/certs/server.crt")),
[INFO] [stdout]     |         ^^^^^^^^ `ServerConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `tls`, `cors`, `security_headers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `stream`
[INFO] [stdout]   --> tests/integration/websocket_test.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 |         ServerMessage::Output { data } => assert_eq!(data, "Hello World\n"),
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing field `stream`
[INFO] [stdout]    |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]    |
[INFO] [stdout] 45 |         ServerMessage::Output { data, stream } => assert_eq!(data, "Hello World\n"),
[INFO] [stdout]    |                                     ++++++++
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]    |
[INFO] [stdout] 45 |         ServerMessage::Output { data, stream: _ } => assert_eq!(data, "Hello World\n"),
[INFO] [stdout]    |                                     +++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]    |
[INFO] [stdout] 45 |         ServerMessage::Output { data, .. } => assert_eq!(data, "Hello World\n"),
[INFO] [stdout]    |                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `ServerConfig` has no field named `tls_key`
[INFO] [stdout]    --> tests/unit/config_test.rs:232:9
[INFO] [stdout]     |
[INFO] [stdout] 232 |         tls_key: Some(PathBuf::from("/etc/ssl/private/server.key")),
[INFO] [stdout]     |         ^^^^^^^ `ServerConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `tls`, `cors`, `security_headers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `tls_cert` on type `ServerConfig`
[INFO] [stdout]    --> tests/unit/config_test.rs:238:20
[INFO] [stdout]     |
[INFO] [stdout] 238 |     assert!(config.tls_cert.is_some());
[INFO] [stdout]     |                    ^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `host`, `port`, `tls`, `cors`, `security_headers` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `tls_key` on type `ServerConfig`
[INFO] [stdout]    --> tests/unit/config_test.rs:239:20
[INFO] [stdout]     |
[INFO] [stdout] 239 |     assert!(config.tls_key.is_some());
[INFO] [stdout]     |                    ^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `host`, `port`, `tls`, `cors`, `security_headers` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `tls_cert` on type `ServerConfig`
[INFO] [stdout]    --> tests/unit/config_test.rs:241:16
[INFO] [stdout]     |
[INFO] [stdout] 241 |         config.tls_cert.unwrap(),
[INFO] [stdout]     |                ^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `host`, `port`, `tls`, `cors`, `security_headers` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `code` and `details` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:108:21
[INFO] [stdout]     |
[INFO] [stdout] 108 |     let error_msg = ServerMessage::Error {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^ missing `code` and `details`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention fields `code`, `details`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 119 |         ServerMessage::Error { message } => assert_eq!(message, "Command not found"),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing fields `code`, `details`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing fields in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 119 |         ServerMessage::Error { message, code, details } => assert_eq!(message, "Command not found"),
[INFO] [stdout]     |                                       +++++++++++++++
[INFO] [stdout] help: if you don't care about these missing fields, you can explicitly ignore them
[INFO] [stdout]     |
[INFO] [stdout] 119 |         ServerMessage::Error { message, code: _, details: _ } => assert_eq!(message, "Command not found"),
[INFO] [stdout]     |                                       +++++++++++++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 119 |         ServerMessage::Error { message, .. } => assert_eq!(message, "Command not found"),
[INFO] [stdout]     |                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `pid` and `signal` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:129:22
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let exited_msg = ServerMessage::ProcessExited { exit_code: 0 };
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `pid` and `signal`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `state` found for reference `&Arc<Session>` in the current scope
[INFO] [stdout]    --> benches/concurrent_load.rs:280:42
[INFO] [stdout]     |
[INFO] [stdout] 280 |                     let _state = session.state().await;
[INFO] [stdout]     |                                          ^^^^^ private field, not a method
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `pid` and `signal` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:136:22
[INFO] [stdout]     |
[INFO] [stdout] 136 |     let exited_msg = ServerMessage::ProcessExited { exit_code: 127 };
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `pid` and `signal`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention fields `pid`, `signal`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:143:9
[INFO] [stdout]     |
[INFO] [stdout] 143 |         ServerMessage::ProcessExited { exit_code } => assert_eq!(exit_code, 127),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing fields `pid`, `signal`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing fields in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 143 |         ServerMessage::ProcessExited { exit_code, pid, signal } => assert_eq!(exit_code, 127),
[INFO] [stdout]     |                                                 +++++++++++++
[INFO] [stdout] help: if you don't care about these missing fields, you can explicitly ignore them
[INFO] [stdout]     |
[INFO] [stdout] 143 |         ServerMessage::ProcessExited { exit_code, pid: _, signal: _ } => assert_eq!(exit_code, 127),
[INFO] [stdout]     |                                                 +++++++++++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 143 |         ServerMessage::ProcessExited { exit_code, .. } => assert_eq!(exit_code, 127),
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0533]: expected value, found struct variant `ServerMessage::Pong`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:163:20
[INFO] [stdout]     |
[INFO] [stdout] 163 |     let pong_msg = ServerMessage::Pong;
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^ not a value
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to create a new value of the struct
[INFO] [stdout]     |
[INFO] [stdout] 163 |     let pong_msg = ServerMessage::Pong { timestamp: /* value */, latency_ms: /* value */ };
[INFO] [stdout]     |                                        +++++++++++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0533]: expected unit struct, unit variant or constant, found struct variant `ServerMessage::Pong`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:169:22
[INFO] [stdout]     |
[INFO] [stdout] 169 |     matches!(parsed, ServerMessage::Pong);
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^ not a unit struct, unit variant or constant
[INFO] [stdout]     |
[INFO] [stdout] help: the struct variant's fields are being ignored
[INFO] [stdout]     |
[INFO] [stdout] 169 |     matches!(parsed, ServerMessage::Pong { timestamp: _, latency_ms: _ });
[INFO] [stdout]     |                                          +++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `session_id` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:177:22
[INFO] [stdout]     |
[INFO] [stdout] 177 |     let status_msg = ServerMessage::ConnectionStatus {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `session_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `session_id` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:194:19
[INFO] [stdout]     |
[INFO] [stdout] 194 |         let msg = ServerMessage::ConnectionStatus { status };
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `session_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `session_id`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:199:13
[INFO] [stdout]     |
[INFO] [stdout] 199 |             ServerMessage::ConnectionStatus { status: s } => {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing field `session_id`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 199 |             ServerMessage::ConnectionStatus { status: s, session_id } => {
[INFO] [stdout]     |                                                        ++++++++++++
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 199 |             ServerMessage::ConnectionStatus { status: s, session_id: _ } => {
[INFO] [stdout]     |                                                        +++++++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 199 |             ServerMessage::ConnectionStatus { status: s, .. } => {
[INFO] [stdout]     |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `stream` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:260:9
[INFO] [stdout]     |
[INFO] [stdout] 260 |         ServerMessage::Output {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^ missing `stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `code` and `details` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:263:9
[INFO] [stdout]     |
[INFO] [stdout] 263 |         ServerMessage::Error {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ missing `code` and `details`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `pid` and `signal` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:266:9
[INFO] [stdout]     |
[INFO] [stdout] 266 |         ServerMessage::ProcessExited { exit_code: 0 },
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `pid` and `signal`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `session_id` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:267:9
[INFO] [stdout]     |
[INFO] [stdout] 267 |         ServerMessage::ConnectionStatus {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `session_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0533]: expected value, found struct variant `ServerMessage::Pong`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 270 |         ServerMessage::Pong,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ not a value
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to create a new value of the struct
[INFO] [stdout]     |
[INFO] [stdout] 270 |         ServerMessage::Pong { timestamp: /* value */, latency_ms: /* value */ },
[INFO] [stdout]     |                             +++++++++++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `stream` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:287:21
[INFO] [stdout]     |
[INFO] [stdout] 287 |     let large_msg = ServerMessage::Output {
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^ missing `stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `stream`
[INFO] [stdout]    --> tests/integration/websocket_test.rs:296:9
[INFO] [stdout]     |
[INFO] [stdout] 296 |         ServerMessage::Output { data } => {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing field `stream`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 296 |         ServerMessage::Output { data, stream } => {
[INFO] [stdout]     |                                     ++++++++
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 296 |         ServerMessage::Output { data, stream: _ } => {
[INFO] [stdout]     |                                     +++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 296 |         ServerMessage::Output { data, .. } => {
[INFO] [stdout]     |                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `stream` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:107:15
[INFO] [stdout]     |
[INFO] [stdout] 107 |     let msg = ServerMessage::Output {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ missing `stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `stream`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 119 |         ServerMessage::Output { data } => assert_eq!(data, "Hello World\n"),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing field `stream`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 119 |         ServerMessage::Output { data, stream } => assert_eq!(data, "Hello World\n"),
[INFO] [stdout]     |                                     ++++++++
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 119 |         ServerMessage::Output { data, stream: _ } => assert_eq!(data, "Hello World\n"),
[INFO] [stdout]     |                                     +++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 119 |         ServerMessage::Output { data, .. } => assert_eq!(data, "Hello World\n"),
[INFO] [stdout]     |                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `session`
[INFO] [stdout]   --> tests/integration/authorization_test.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |     let session = session_manager.create_session(alice.clone()).await?;
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_session`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `code` and `details` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:128:15
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let msg = ServerMessage::Error {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^ missing `code` and `details`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention fields `code`, `details`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |         ServerMessage::Error { message } => assert_eq!(message, "Command not found"),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing fields `code`, `details`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing fields in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 140 |         ServerMessage::Error { message, code, details } => assert_eq!(message, "Command not found"),
[INFO] [stdout]     |                                       +++++++++++++++
[INFO] [stdout] help: if you don't care about these missing fields, you can explicitly ignore them
[INFO] [stdout]     |
[INFO] [stdout] 140 |         ServerMessage::Error { message, code: _, details: _ } => assert_eq!(message, "Command not found"),
[INFO] [stdout]     |                                       +++++++++++++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 140 |         ServerMessage::Error { message, .. } => assert_eq!(message, "Command not found"),
[INFO] [stdout]     |                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `pid` and `signal` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:151:15
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let msg = ServerMessage::ProcessExited { exit_code: 0 };
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `pid` and `signal`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention fields `pid`, `signal`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:161:9
[INFO] [stdout]     |
[INFO] [stdout] 161 |         ServerMessage::ProcessExited { exit_code } => assert_eq!(exit_code, 0),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing fields `pid`, `signal`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing fields in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 161 |         ServerMessage::ProcessExited { exit_code, pid, signal } => assert_eq!(exit_code, 0),
[INFO] [stdout]     |                                                 +++++++++++++
[INFO] [stdout] help: if you don't care about these missing fields, you can explicitly ignore them
[INFO] [stdout]     |
[INFO] [stdout] 161 |         ServerMessage::ProcessExited { exit_code, pid: _, signal: _ } => assert_eq!(exit_code, 0),
[INFO] [stdout]     |                                                 +++++++++++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 161 |         ServerMessage::ProcessExited { exit_code, .. } => assert_eq!(exit_code, 0),
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: web-terminal@0.1.0: Building with profile: debug
[INFO] [stdout] error[E0063]: missing field `session_id` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:170:15
[INFO] [stdout]     |
[INFO] [stdout] 170 |     let msg = ServerMessage::ConnectionStatus {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `session_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: web-terminal@0.1.0: Skipping frontend build in debug mode (use 'pnpm run build' manually)
[INFO] [stdout] error[E0027]: pattern does not mention field `session_id`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:182:9
[INFO] [stdout]     |
[INFO] [stdout] 182 |         ServerMessage::ConnectionStatus { status } => {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing field `session_id`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 182 |         ServerMessage::ConnectionStatus { status, session_id } => {
[INFO] [stdout]     |                                                 ++++++++++++
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 182 |         ServerMessage::ConnectionStatus { status, session_id: _ } => {
[INFO] [stdout]     |                                                 +++++++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 182 |         ServerMessage::ConnectionStatus { status, .. } => {
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `web-terminal` (bench "concurrent_load") due to 4 previous errors; 2 warnings emitted
[INFO] [stdout] error[E0533]: expected value, found struct variant `ServerMessage::Pong`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:193:15
[INFO] [stdout]     |
[INFO] [stdout] 193 |     let msg = ServerMessage::Pong;
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^ not a value
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to create a new value of the struct
[INFO] [stdout]     |
[INFO] [stdout] 193 |     let msg = ServerMessage::Pong { timestamp: /* value */, latency_ms: /* value */ };
[INFO] [stdout]     |                                   +++++++++++++++++++++++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0599`.
[INFO] [stdout] 
[INFO] [stdout] error[E0533]: expected unit struct, unit variant or constant, found struct variant `ServerMessage::Pong`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |         ServerMessage::Pong => (),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ not a unit struct, unit variant or constant
[INFO] [stdout]     |
[INFO] [stdout] help: the struct variant's fields are being ignored
[INFO] [stdout]     |
[INFO] [stdout] 202 |         ServerMessage::Pong { timestamp: _, latency_ms: _ } => (),
[INFO] [stdout]     |                             +++++++++++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `stream` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:271:15
[INFO] [stdout]     |
[INFO] [stdout] 271 |     let msg = ServerMessage::Output {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ missing `stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `stream`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:278:9
[INFO] [stdout]     |
[INFO] [stdout] 278 |         ServerMessage::Output { data } => {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing field `stream`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 278 |         ServerMessage::Output { data, stream } => {
[INFO] [stdout]     |                                     ++++++++
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 278 |         ServerMessage::Output { data, stream: _ } => {
[INFO] [stdout]     |                                     +++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 278 |         ServerMessage::Output { data, .. } => {
[INFO] [stdout]     |                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `stream` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:331:15
[INFO] [stdout]     |
[INFO] [stdout] 331 |     let msg = ServerMessage::Output {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^ missing `stream`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention field `stream`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 |         ServerMessage::Output { data } => assert_eq!(data.len(), large_data.len()),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing field `stream`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing field in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 338 |         ServerMessage::Output { data, stream } => assert_eq!(data.len(), large_data.len()),
[INFO] [stdout]     |                                     ++++++++
[INFO] [stdout] help: if you don't care about this missing field, you can explicitly ignore it
[INFO] [stdout]     |
[INFO] [stdout] 338 |         ServerMessage::Output { data, stream: _ } => assert_eq!(data.len(), large_data.len()),
[INFO] [stdout]     |                                     +++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 338 |         ServerMessage::Output { data, .. } => assert_eq!(data.len(), large_data.len()),
[INFO] [stdout]     |                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `pid` and `signal` in initializer of `ServerMessage`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:346:15
[INFO] [stdout]     |
[INFO] [stdout] 346 |     let msg = ServerMessage::ProcessExited { exit_code: -1 };
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `pid` and `signal`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0027]: pattern does not mention fields `pid`, `signal`
[INFO] [stdout]    --> tests/unit/protocol_test.rs:351:9
[INFO] [stdout]     |
[INFO] [stdout] 351 |         ServerMessage::ProcessExited { exit_code } => assert_eq!(exit_code, -1),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing fields `pid`, `signal`
[INFO] [stdout]     |
[INFO] [stdout] help: include the missing fields in the pattern
[INFO] [stdout]     |
[INFO] [stdout] 351 |         ServerMessage::ProcessExited { exit_code, pid, signal } => assert_eq!(exit_code, -1),
[INFO] [stdout]     |                                                 +++++++++++++
[INFO] [stdout] help: if you don't care about these missing fields, you can explicitly ignore them
[INFO] [stdout]     |
[INFO] [stdout] 351 |         ServerMessage::ProcessExited { exit_code, pid: _, signal: _ } => assert_eq!(exit_code, -1),
[INFO] [stdout]     |                                                 +++++++++++++++++++
[INFO] [stdout] help: or always ignore missing fields here
[INFO] [stdout]     |
[INFO] [stdout] 351 |         ServerMessage::ProcessExited { exit_code, .. } => assert_eq!(exit_code, -1),
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing fields `max_buffer_size`, `read_timeout_ms` and `working_dir` in initializer of `PtyConfig`
[INFO] [stdout]   --> tests/unit/pty_manager_test.rs:18:18
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let config = PtyConfig {
[INFO] [stdout]    |                  ^^^^^^^^^ missing `max_buffer_size`, `read_timeout_ms` and `working_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]   --> tests/integration/concurrent_sessions_test.rs:91:14
[INFO] [stdout]    |
[INFO] [stdout] 91 |     for (i, (user_id, session)) in user_sessions.iter().enumerate() {
[INFO] [stdout]    |              ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]    --> tests/integration/concurrent_sessions_test.rs:109:10
[INFO] [stdout]     |
[INFO] [stdout] 109 |     for (user_id, session) in user_sessions {
[INFO] [stdout]     |          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `PtyProcessHandle` doesn't implement `std::fmt::Debug`
[INFO] [stdout]    --> tests/unit/pty_manager_test.rs:104:29
[INFO] [stdout]     |
[INFO] [stdout] 104 |     assert!(matches!(result.unwrap_err(), PtyError::ProcessNotFound(_)));
[INFO] [stdout]     |                             ^^^^^^^^^^ the trait `std::fmt::Debug` is not implemented for `PtyProcessHandle`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `Result::<T, E>::unwrap_err`
[INFO] [stdout]    --> /rustc/03c609abb6638f9d7f49f34326d4137d07f5cd61/library/core/src/result.rs:1324:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn portable_pty::MasterPty + Send + 'static)` cannot be shared between threads safely
[INFO] [stdout]    --> tests/unit/pty_manager_test.rs:348:26
[INFO] [stdout]     |
[INFO] [stdout] 348 |             tokio::spawn(async move { manager_clone.spawn(None).expect("Failed to spawn PTY") });
[INFO] [stdout]     |             ------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn portable_pty::MasterPty + Send + 'static)` cannot be shared between threads safely
[INFO] [stdout]     |             |
[INFO] [stdout]     |             required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sync` is not implemented for `(dyn portable_pty::MasterPty + Send + 'static)`
[INFO] [stdout]     = note: required for `std::ptr::Unique<(dyn portable_pty::MasterPty + Send + 'static)>` to implement `Sync`
[INFO] [stdout] note: required because it appears within the type `Box<(dyn portable_pty::MasterPty + Send + 'static)>`
[INFO] [stdout]    --> /rustc/03c609abb6638f9d7f49f34326d4137d07f5cd61/library/alloc/src/boxed.rs:234:11
[INFO] [stdout] note: required because it appears within the type `pty::process::PtyProcessInner`
[INFO] [stdout]    --> src/pty/process.rs:16:19
[INFO] [stdout]     |
[INFO] [stdout]  16 | pub(crate) struct PtyProcessInner {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: required for `tokio::sync::RwLock<pty::process::PtyProcessInner>` to implement `Sync`
[INFO] [stdout]     = note: required for `Arc<tokio::sync::RwLock<pty::process::PtyProcessInner>>` to implement `Send`
[INFO] [stdout] note: required because it appears within the type `PtyProcessHandle`
[INFO] [stdout]    --> src/pty/process.rs:11:12
[INFO] [stdout]     |
[INFO] [stdout]  11 | pub struct PtyProcessHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `tokio::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/task/spawn.rs:169:20
[INFO] [stdout]     |
[INFO] [stdout] 166 |     pub fn spawn<F>(future: F) -> JoinHandle<F::Output>
[INFO] [stdout]     |            ----- required by a bound in this function
[INFO] [stdout] ...
[INFO] [stdout] 169 |         F::Output: Send + 'static,
[INFO] [stdout]     |                    ^^^^ required by this bound in `spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/integration/error_recovery_test.rs:74:9
[INFO] [stdout]    |
[INFO] [stdout] 74 |     let mut writer = pty_manager
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `PtyProcessHandle` doesn't implement `std::fmt::Debug`
[INFO] [stdout]    --> tests/unit/pty_manager_test.rs:435:29
[INFO] [stdout]     |
[INFO] [stdout] 435 |     assert!(matches!(result.unwrap_err(), PtyError::ProcessNotFound(_)));
[INFO] [stdout]     |                             ^^^^^^^^^^ the trait `std::fmt::Debug` is not implemented for `PtyProcessHandle`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `Result::<T, E>::unwrap_err`
[INFO] [stdout]    --> /rustc/03c609abb6638f9d7f49f34326d4137d07f5cd61/library/core/src/result.rs:1324:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration/file_operations_test.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     let mut writer = pty_manager
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/integration/terminal_session_test.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 |     let mut writer = pty_manager
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `manager`
[INFO] [stdout]   --> tests/unit/execution_test.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let manager = ProcessManager::new();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_manager`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `manager`
[INFO] [stdout]   --> tests/unit/execution_test.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let manager = ProcessManager::default();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration/terminal_session_test.rs:230:9
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let mut writer = pty_manager
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `writer`
[INFO] [stdout]    --> tests/integration/terminal_session_test.rs:230:9
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let mut writer = pty_manager
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_writer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/integration/terminal_session_test.rs:254:9
[INFO] [stdout]     |
[INFO] [stdout] 254 |     let mut writer = pty_manager
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0027, E0063, E0432, E0533.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0027`.
[INFO] [stdout] 
[INFO] [stderr] warning: web-terminal@0.1.0: Building with profile: debug
[INFO] [stderr] warning: web-terminal@0.1.0: Skipping frontend build in debug mode (use 'pnpm run build' manually)
[INFO] [stderr] error: could not compile `web-terminal` (test "integration_tests") due to 20 previous errors; 18 warnings emitted
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> tests/unit/pty_manager_test.rs:175:9
[INFO] [stdout]     |
[INFO] [stdout] 175 |     let result = manager.resize(&id, 0, 0).await;
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handle2`
[INFO] [stdout]    --> tests/unit/pty_manager_test.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 209 |     let handle2 = manager.spawn(None).expect("Failed to spawn PTY 2");
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handle2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reader`
[INFO] [stdout]    --> tests/unit/pty_manager_test.rs:305:9
[INFO] [stdout]     |
[INFO] [stdout] 305 |     let reader = manager
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_reader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `writer`
[INFO] [stdout]    --> tests/unit/pty_manager_test.rs:324:9
[INFO] [stdout]     |
[INFO] [stdout] 324 |     let writer = manager.create_writer(&id).expect("Failed to create writer");
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_writer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0027, E0063, E0252, E0277, E0432, E0533, E0560, E0609.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0027`.
[INFO] [stdout] 
[INFO] [stderr] warning: web-terminal@0.1.0: Building with profile: debug
[INFO] [stderr] warning: web-terminal@0.1.0: Skipping frontend build in debug mode (use 'pnpm run build' manually)
[INFO] [stderr] error: could not compile `web-terminal` (test "unit_tests") due to 35 previous errors; 8 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "c5d6dbb10fe5472acbb298c429b03adf0f56b2813c5f6d3c91cec833b83cf579", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c5d6dbb10fe5472acbb298c429b03adf0f56b2813c5f6d3c91cec833b83cf579", kill_on_drop: false }`
[INFO] [stdout] c5d6dbb10fe5472acbb298c429b03adf0f56b2813c5f6d3c91cec833b83cf579
